using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System.Collections.Generic;
using Base;

namespace Drawing
{
    /// <summary>
    /// Shape is the base class of any object that is renderable
    /// </summary>
    public abstract class Shape: IShape
    {
        private List<VertexPositionColor> vertices = new List<VertexPositionColor>();

        public List<VertexPositionColor> Vertices
        {
            get { return vertices; }
            set { vertices = value; }
        }

        private PrimitiveType privitiveType;

        public PrimitiveType PrivitiveType
        {
            get { return privitiveType; }
            set { privitiveType = value; }
        }
        protected Vector3 position;

        public Vector3 Position
        {
            get
            {
                return position;
            }
            set
            {
                position = value;
            }
        }


        /// <summary>
        /// Creates a new shape. Calls the virtual Create method to generate any vertex buffers etc
        /// </summary>
        public Shape()
        {
        }

        /// <summary>
        /// Renders the shape. Base class does nothing
        /// </summary>
        public virtual void Render()
        {
        }

        /// <summary>
        /// Updates the shape. Base class does nothing
        /// </summary>
        /// <param name="time">Game Time</param>
        /// <param name="elapsedTime">Elapsed game time since last call</param>
        public virtual void Update(GameTime time)
        {
        }
    }
}
